package com.csthink.breaker.annotations;

import java.lang.annotation.*;

/**
 * 实现基于 Redis+Lua 的限流注解
 *
 * @author <a href="mailto:security.2009@live.cn">Mars</a>
 * @since 2023-09-08
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@Documented
public @interface RedisLimit {

    /**
     * 资源的key,唯一,必填
     * 作用: 不同的接口，不同的流量控制
     *
     * @return
     */
    String key() default "";

    /**
     * 最多的访问限制次数
     *
     * @return
     */
    long permitsPerSecond() default 2;

    /**
     * 过期时间也可以理解为单位时间，单位秒，默认60
     *
     * @return
     */
    long expire() default 60;

    /**
     * 令牌获取失败的提示语
     *
     * @return
     */
    String msg() default "系统繁忙,请稍后再试";
}
